package com.zy.explore.report.interfaces.feign.base;

import com.zy.explore.report.interfaces.frm.CommonIdFrm;
import com.zy.explore.report.interfaces.vo.ResultVO;
import com.zy.explore.report.interfaces.frm.ExampleSaveFrm;
import com.zy.explore.report.infrastructure.constant.ProjectConstant;

import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.validation.annotation.Validated;

/**
 * description Redis示例Feign
 *
 * @author ZY
 * @date 2021年05月20日 23:09
 */
@FeignClient(value = ProjectConstant.APPLICATION_NAME, path = "/redis", contextId = ProjectConstant.APPLICATION_NAME + ".RedisExampleFeign")
public interface RedisExampleFeign {

    /**
     * 新增数据
     *
     * @param frm 待新增的Frm对象
     * @return 成功返回新增后的VO对象，失败返回null
     */
    @ApiOperation("1新增数据")
    @PostMapping("/insert")
    ResultVO<String> insert(@RequestBody @Validated ExampleSaveFrm frm);

    /**
     * 删除数据
     *
     * @param frm 主键Frm对象
     * @return 1:删除成功 其他:删除失败
     */
    @ApiOperation("2删除数据")
    @PostMapping("/delete")
    Integer delete(@RequestBody @Validated CommonIdFrm frm);


    /**
     * 通过主键查询单条数据
     *
     * @param frm 主键Frm对象
     * @return 成功返回对应ID的VO对象，查询不到返回null
     */
    @ApiOperation("3根据主键查询数据")
    @PostMapping("/findById")
    Object findById(@RequestBody @Validated CommonIdFrm frm);

}
